package com.songjia.common.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import com.songjia.common.model.base.ResponseInfo;
import com.songjia.common.service.fallback.DeptClientServiceFallbackFactory;

/*
 * Feign是一个声明式的伪Http客户端，它使得写Http客户端变得更简单。使用Feign，只需要创建一个 接口 + 注解。
 * 
 * Feign默认集成了Ribbon，并和Eureka结合，默认实现了负载均衡的效果。
 * 
 * 定义一个feign接口，通过@FeignClient（“服务名”），来指定调用哪个服务。
 * 
 * 比如在代码中调用了erueka-client服务的'/depts'接口
 * 
 */
@FeignClient(value = "eureka-client", fallbackFactory = DeptClientServiceFallbackFactory.class)
public interface DeptClientService {

	@GetMapping("/dept/{id}")
	public ResponseInfo get(@PathVariable("id") Long id);

	@GetMapping("/depts")
	public ResponseInfo getAll();
}
